package pers.ree.demo.base;

public class InnerClassDemo {

    private int x;

    private int y;


    public static void main(String[] args) {
        String s1 = "abc";

        InnerInterface1 iif1 = new InnerInterface1() {
            // jdk6以前，接口的实现方法加@Override会编译报错
            @Override
            public void print(String s) {
                // jdk6以前，如果s1没有加final，此处会编译报错
                // jdk8开始，s1可以不加final，但是不能修改，如 s1="abc";
//                System.out.println(s1 + s);
            }
        };

        iif1.print("!");
    }

    public void modifyVar() {
        int localVar1 = 11;

        InnerInterface1 iif1 = new InnerInterface1() {
            // jdk6以前，接口的实现方法加@Override会编译报错
            @Override
            public void print(String s) {
                System.out.println(x + y);
            }
        };

//        class MethodInnerClass {
//            public int getLocalVar1() {
//                // 不管是不是匿名内部类，jdk8之前使用的局部变量都需要加final
//                return localVar1;
//            }
//        }
    }

    interface InnerInterface1 {
        void print(String s);
    }

    class InnerClass1 {
        int z = 100;

        public int add() {
            return x + y + z;
        }
    }
}
